import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase a partir de la cual se crean las plataformas
 * 
 * @author Omar Espino
 * @version 20/11/2014
 */
public class Plataforma extends Obstaculo
{
    private final int DISTANCIA=2;
    private int direccion;
    private final int IZQUIERDA=0;
    private final int DERECHA=1;
   
    /**constructor de la clase en la cual se le asigna una direccion aleatoria al iniciar*/
    public Plataforma()
    {
      direccion=Greenfoot.getRandomNumber(2);
    }
    
    /**meotodo principal dde como actuaran las plataformas creadas en el juego*/
    public void act() 
    {
      movimiento();
      llevaApopo();
      cambiaDireccion();
    } 
    /**metodo que se encarga de mover las plataformas*/
    public void movimiento()
    {
        if(direccion==DERECHA)
        {
        setLocation(getX()+DISTANCIA,getY());
        }
        
        if(direccion==IZQUIERDA)
        {
        setLocation(getX()-DISTANCIA,getY());
        }
    }
    /**metodo que cambia la direccion de como se movera la plataforma al chocar con otro objeto*/
    public void cambiaDireccion()
    {
         if(isTouching(Baseder.class))
        {
           direccion=IZQUIERDA; 
        }
        
        if(isTouching(Baseizq.class))
        {
           direccion=DERECHA; 
        }
        
        if(isTouching(Plataforma.class))
        {
            if(direccion==DERECHA)
            {
                direccion=IZQUIERDA;
            }
            else
            {
                direccion=DERECHA;
            }
        }
        
        if(isTouching(Bloque.class))
        {
            if(direccion==DERECHA)
            {
                direccion=IZQUIERDA;
            }
            else
            {
                direccion=DERECHA;
            }
        }
        
        if(isTouching(Ladrillo8.class))
        {
            if(direccion==DERECHA)
            {
                direccion=IZQUIERDA;
            }
            else
            {
                direccion=DERECHA;
            }
        }
    }
    /**metodo que se encarga de llevar encima al personaje cuando este este arriba de ella*/
    public void llevaApopo()
    { if(isTouching(Popo.class))
        {
            MundoIceClimber mundo=(MundoIceClimber)getWorld();
            Popo personaje=mundo.getPersonaje();
            
            int x=0;
            if(Greenfoot.isKeyDown("left"))
            {
             x=1;
             personaje.setLocation(personaje.getX()-6,personaje.getY());
            }
            
            if(Greenfoot.isKeyDown("right"))
            {
            x=1;
            personaje.setLocation(personaje.getX()+6,personaje.getY());
            }
            
            if(Greenfoot.isKeyDown("up"))
            {
            x=1;
            personaje.setLocation(personaje.getX(),personaje.getY()-16);
            }
            
            if(x==0)
            {
                 personaje.setLocation(getX(),getY()-20);
            }
        }   
    }
}
